CodeIgniter Form Handling এবং Validation

Web Development - কোডইগনাইটার (Codeigniter) -

CodeIgniter এ Form Handling এবং Validation ওয়েব ফর্ম থেকে ডেটা সংগ্রহ করা, প্রক্রিয়া করা এবং সঠিকতা যাচাই করার জন্য ব্যবহৃত হয়। এটি ব্যবহারকারীর ভুল ইনপুট প্রতিরোধে এবং নিরাপত্তা নিশ্চিত করতে সাহায্য করে।


Form Handling

১. ফর্ম তৈরি

CodeIgniter এ HTML ফর্ম তৈরি করা সাধারণ HTML এর মতোই। উদাহরণস্বরূপ:

<form action="/form/submit" method="post">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name">
    
    <label for="email">Email:</label>
    <input type="email" id="email" name="email">
    
    <button type="submit">Submit</button>
</form>

২. Controller এ ফর্ম ডেটা গ্রহণ

Controller এ request ব্যবহার করে ফর্ম ডেটা সংগ্রহ করা যায়:

namespace App\Controllers;

class Form extends BaseController
{
    public function submit()
    {
        // ফর্ম ডেটা গ্রহণ
        $name = $this->request->getPost('name');
        $email = $this->request->getPost('email');

        // ডেটা প্রসেস বা স্টোর করুন
        return "Name: $name, Email: $email";
    }
}

Validation (সঠিকতা যাচাই)

CodeIgniter এর Validation Library ফর্ম ডেটার সঠিকতা যাচাই করার একটি শক্তিশালী টুল। এটি ইনপুট ডেটার নির্ধারিত নিয়মের সাথে মিল আছে কিনা তা পরীক্ষা করে।

১. Validation Rules সংজ্ঞায়িত করা

Controller এ Validation Rules নির্ধারণ করতে validate() মেথড ব্যবহার করা হয়:

use CodeIgniter\Controller;

class Form extends BaseController
{
    public function submit()
    {
        $validation = $this->validate([
            'name'  => 'required|min_length[3]|max_length[50]',
            'email' => 'required|valid_email'
        ]);

        if (!$validation) {
            // ভ্যালিডেশন ব্যর্থ হলে
            return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
        }

        // ভ্যালিডেশন সফল হলে
        $name = $this->request->getPost('name');
        $email = $this->request->getPost('email');

        return "Name: $name, Email: $email";
    }
}

২. Validation Rules ব্যাখ্যা

  • required: ফিল্ডটি অবশ্যই পূরণ করতে হবে।
  • min_length[3]: ইনপুটের সর্বনিম্ন দৈর্ঘ্য ৩ হতে হবে।
  • max_length[50]: ইনপুটের সর্বাধিক দৈর্ঘ্য ৫০ হতে হবে।
  • valid_email: ইনপুটটি একটি বৈধ ইমেইল হতে হবে।

Validation Error Message প্রদর্শন

Controller এ Error Message পাস করা

Controller থেকে ভিউ-এ ভ্যালিডেশন ত্রুটি পাস করুন:

if (!$validation) {
    return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}

View এ Error Message দেখানো

View ফাইলে ত্রুটি বার্তা প্রদর্শনের জন্য:

<?php if (session()->has('errors')): ?>
    <ul>
        <?php foreach (session('errors') as $error): ?>
            <li><?php echo $error; ?></li>
        <?php endforeach; ?>
    </ul>
<?php endif; ?>

পুরনো ইনপুট ফিল্ডে ডেটা দেখানো

ফর্ম সাবমিশন ব্যর্থ হলে পুরনো ইনপুট পুনরায় প্রদর্শন করতে old() ফাংশন ব্যবহার করা হয়:

<form action="/form/submit" method="post">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name" value="<?= old('name'); ?>">
    
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" value="<?= old('email'); ?>">
    
    <button type="submit">Submit</button>
</form>

Custom Validation Rules

Custom Rule তৈরি

আপনার নিজস্ব ভ্যালিডেশন রুল সংজ্ঞায়িত করতে app/Validation/CustomRules.php ফাইল তৈরি করুন:

namespace App\Validation;

class CustomRules
{
    public function valid_username(string $str, string $fields, array $data): bool
    {
        return preg_match('/^[a-zA-Z0-9]+$/', $str) === 1;
    }
}

Validation Config এ Custom Rule নিবন্ধন

app/Config/Validation.php ফাইলে Custom Rule যুক্ত করুন:

public $ruleSets = [
    \CodeIgniter\Validation\Rules::class,
    \App\Validation\CustomRules::class,
];

Custom Rule ব্যবহার

Controller এ Custom Rule প্রয়োগ করুন:

$validation = $this->validate([
    'username' => 'required|valid_username'
]);

Form Handling এবং Validation এর ভূমিকা

  1. সঠিক ডেটা ইনপুট নিশ্চিতকরণ: Validation Library ইনপুট ডেটা নির্ভুল কিনা তা নিশ্চিত করে।
  2. ব্যবহারকারীর অভিজ্ঞতা উন্নত করা: ত্রুটি বার্তা প্রদর্শন এবং পুরনো ইনপুট পুনরায় প্রদর্শন ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
  3. নিরাপত্তা নিশ্চিতকরণ: ইনপুট ফিল্টারিং এবং স্যানিটাইজেশন ব্যবহার করে ডেটাবেসে ক্ষতিকারক ডেটা যাওয়া প্রতিরোধ করে।

উদাহরণ: একটি সম্পূর্ণ ফর্ম

Controller

namespace App\Controllers;

class Form extends BaseController
{
    public function submit()
    {
        $validation = $this->validate([
            'name'  => 'required|min_length[3]',
            'email' => 'required|valid_email'
        ]);

        if (!$validation) {
            return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
        }

        return "Form submitted successfully!";
    }
}

View

<form action="/form/submit" method="post">
    <?php if (session()->has('errors')): ?>
        <ul>
            <?php foreach (session('errors') as $error): ?>
                <li><?php echo $error; ?></li>
            <?php endforeach; ?>
        </ul>
    <?php endif; ?>

    <label for="name">Name:</label>
    <input type="text" id="name" name="name" value="<?= old('name'); ?>">

    <label for="email">Email:</label>
    <input type="email" id="email" name="email" value="<?= old('email'); ?>">

    <button type="submit">Submit</button>
</form>

CodeIgniter এর Form Handling এবং Validation ব্যবহার করে সহজেই ফর্ম ডেটা সংগ্রহ, যাচাই, এবং প্রক্রিয়া করা যায়। এটি সঠিক ডেটা ব্যবহারের নিশ্চয়তা প্রদান করে এবং অ্যাপ্লিকেশনকে নিরাপদ ও ব্যবহারবান্ধব করে তোলে।

Content added By

Form তৈরি এবং ডেটা সাবমিট করা

CodeIgniter ব্যবহার করে ফর্ম তৈরি এবং ডেটা সাবমিট করার প্রক্রিয়া খুবই সহজ এবং কার্যকর। CodeIgniter এর Form Helper এবং Validation Library ব্যবহার করে ফর্ম ডেটা সহজে প্রক্রিয়া এবং যাচাই করা যায়।


ধাপ ১: Controller তৈরি

প্রথমে একটি Controller তৈরি করুন, যা ফর্ম ভিউ লোড করবে এবং ফর্ম ডেটা প্রক্রিয়া করবে।

namespace App\Controllers;

use CodeIgniter\Controller;

class FormController extends Controller {
    public function index() {
        return view('form_view');
    }

    public function submit() {
        // ফর্ম ডেটা রিসিভ করুন
        $name = $this->request->getPost('name');
        $email = $this->request->getPost('email');

        // ডেটা দেখান
        echo "Name: " . esc($name) . "<br>";
        echo "Email: " . esc($email);
    }
}

ধাপ ২: Form View তৈরি

app/Views/form_view.php নামে একটি ফাইল তৈরি করুন এবং HTML ফর্ম কোড যোগ করুন:

<!DOCTYPE html>
<html>
<head>
    <title>Form Example</title>
</head>
<body>
    <h1>Fill the Form</h1>
    <form action="<?= site_url('formcontroller/submit'); ?>" method="post">
        <label for="name">Name:</label>
        <input type="text" name="name" id="name" required><br><br>

        <label for="email">Email:</label>
        <input type="email" name="email" id="email" required><br><br>

        <button type="submit">Submit</button>
    </form>
</body>
</html>

ধাপ ৩: Routes কনফিগারেশন

app/Config/Routes.php ফাইলে Controller এর জন্য রাউট যোগ করুন:

$routes->get('form', 'FormController::index');
$routes->post('formcontroller/submit', 'FormController::submit');

ধাপ ৪: Form Validation যোগ করা

CodeIgniter এর Validation Library ব্যবহার করে ফর্ম ডেটা যাচাই করুন।

Controller-এ Validation যোগ করা

namespace App\Controllers;

use CodeIgniter\Controller;

class FormController extends Controller {
    public function submit() {
        $validation = \Config\Services::validation();

        // ভ্যালিডেশন রুলস সেট করুন
        $validation->setRules([
            'name' => 'required|min_length[3]|max_length[50]',
            'email' => 'required|valid_email'
        ]);

        // ফর্ম ডেটা যাচাই করুন
        if (!$validation->withRequest($this->request)->run()) {
            // ভ্যালিডেশন ফেইল হলে
            return view('form_view', ['validation' => $validation]);
        }

        // সফল হলে
        $name = $this->request->getPost('name');
        $email = $this->request->getPost('email');

        echo "Name: " . esc($name) . "<br>";
        echo "Email: " . esc($email);
    }
}

View এ ভ্যালিডেশন এরর দেখানো

form_view.php ফাইলে নিচের কোড যোগ করুন:

<?php if (isset($validation)): ?>
    <div style="color: red;">
        <?= $validation->listErrors(); ?>
    </div>
<?php endif; ?>

ধাপ ৫: ডাটাবেসে ফর্ম ডেটা সংরক্ষণ

ডাটাবেস মডেল তৈরি

app/Models/FormModel.php নামে একটি মডেল তৈরি করুন:

namespace App\Models;

use CodeIgniter\Model;

class FormModel extends Model {
    protected $table = 'form_data';
    protected $allowedFields = ['name', 'email'];
}

Controller এ ডাটাবেস সংরক্ষণ কোড যোগ

namespace App\Controllers;

use App\Models\FormModel;
use CodeIgniter\Controller;

class FormController extends Controller {
    public function submit() {
        $validation = \Config\Services::validation();

        $validation->setRules([
            'name' => 'required|min_length[3]|max_length[50]',
            'email' => 'required|valid_email'
        ]);

        if (!$validation->withRequest($this->request)->run()) {
            return view('form_view', ['validation' => $validation]);
        }

        $formModel = new FormModel();
        $formModel->save([
            'name' => $this->request->getPost('name'),
            'email' => $this->request->getPost('email')
        ]);

        echo "Data saved successfully!";
    }
}

ডাটাবেস টেবিল তৈরি

form_data নামে একটি ডাটাবেস টেবিল তৈরি করুন:

CREATE TABLE form_data (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

ফর্মের Reusability নিশ্চিত করা

ফর্মের জন্য পৃথক টেমপ্লেট তৈরি করুন এবং কন্টেন্ট ডায়নামিক করার জন্য পুনরায় ব্যবহারযোগ্য ফাইল তৈরি করুন। উদাহরণ:

<?php echo form_open('formcontroller/submit'); ?>
    <label for="name">Name:</label>
    <input type="text" name="name" id="name" required><br><br>

    <label for="email">Email:</label>
    <input type="email" name="email" id="email" required><br><br>

    <button type="submit">Submit</button>
<?php echo form_close(); ?>

সারাংশ

CodeIgniter-এ ফর্ম তৈরি এবং ডেটা সাবমিট করা খুব সহজ। Validation Library ব্যবহার করে ইনপুট যাচাই নিশ্চিত করা যায় এবং Model ব্যবহার করে ডাটাবেসে ডেটা সংরক্ষণ করা যায়। ফর্মের পুনরায় ব্যবহারযোগ্যতা নিশ্চিত করার জন্য ফর্মের কম্পোনেন্টগুলো পৃথক করুন এবং সেগুলো টেমপ্লেট আকারে সংরক্ষণ করুন।

Content added By

Form Validation Rules এবং Methods

Form Validation হলো CodeIgniter এর একটি গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীর ইনপুট ডেটা যাচাই করার জন্য ব্যবহৃত হয়। এটি ডাটাবেসে ডেটা সংরক্ষণের আগে নিশ্চিত করে যে ইনপুট সঠিক এবং নিরাপদ। CodeIgniter এ Form Validation কার্যকর করার জন্য বিভিন্ন Rules এবং Methods সরবরাহ করা হয়েছে।


Form Validation এর প্রধান উপাদান

  1. Rules (নিয়ম): ইনপুট যাচাই করার জন্য নির্ধারিত নিয়ম।
  2. Methods (পদ্ধতি): Validation পরিচালনা করার জন্য সরবরাহকৃত মেথড।

Form Validation Rules

Form Validation Rules হলো ডেটার ধরন এবং বৈধতা যাচাই করার জন্য ব্যবহৃত প্রি-ডিফাইন্ড নিয়ম। নিচে গুরুত্বপূর্ণ কয়েকটি Rules এর উদাহরণ দেওয়া হলো:

১. required

  • ইনপুট ফিল্ড খালি রাখা যাবে না।
  • উদাহরণ:

    $this->form_validation->set_rules('name', 'Name', 'required');
    

২. min_length

  • ইনপুট ফিল্ডের মিনিমাম দৈর্ঘ্য।
  • উদাহরণ:

    $this->form_validation->set_rules('password', 'Password', 'required|min_length[8]');
    

৩. max_length

  • ইনপুট ফিল্ডের সর্বোচ্চ দৈর্ঘ্য।
  • উদাহরণ:

    $this->form_validation->set_rules('username', 'Username', 'required|max_length[20]');
    

৪. valid_email

  • ইনপুট একটি বৈধ ইমেইল হতে হবে।
  • উদাহরণ:

    $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
    

৫. numeric

  • ইনপুট ফিল্ডে শুধুমাত্র সংখ্যা থাকতে হবে।
  • উদাহরণ:

    $this->form_validation->set_rules('age', 'Age', 'required|numeric');
    

৬. matches

  • ইনপুট ফিল্ডের মান অন্য একটি ফিল্ডের মানের সাথে মিলতে হবে।
  • উদাহরণ:

    $this->form_validation->set_rules('password', 'Password', 'required');
    $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required|matches[password]');
    

৭. is_unique

  • ইনপুট ফিল্ডে এমন একটি মান থাকতে হবে, যা ডাটাবেসে ইউনিক।
  • উদাহরণ:

    $this->form_validation->set_rules('username', 'Username', 'required|is_unique[users.username]');
    

Form Validation Methods

CodeIgniter এ Form Validation পরিচালনা করার জন্য কয়েকটি গুরুত্বপূর্ণ মেথড ব্যবহার করা হয়।

১. set_rules()

  • নির্দিষ্ট ফিল্ডের জন্য Validation Rules সেট করতে ব্যবহার করা হয়।
  • উদাহরণ:

    $this->form_validation->set_rules('name', 'Name', 'required|min_length[3]');
    

২. run()

  • Validation Rules কার্যকর করার জন্য ব্যবহৃত হয়।
  • উদাহরণ:

    if ($this->form_validation->run() == FALSE) {
        $this->load->view('form_view');
    } else {
        echo "Validation Successful!";
    }
    

৩. set_message()

  • কাস্টম এরর মেসেজ নির্ধারণ করার জন্য ব্যবহার করা হয়।
  • উদাহরণ:

    $this->form_validation->set_message('required', '{field} ফিল্ডটি পূরণ করা বাধ্যতামূলক।');
    

৪. error_array()

  • সমস্ত এরর মেসেজ একটি অ্যারে হিসেবে পেতে ব্যবহৃত হয়।
  • উদাহরণ:

    $errors = $this->form_validation->error_array();
    print_r($errors);
    

৫. error_string()

  • সমস্ত এরর মেসেজ একটি স্ট্রিং হিসেবে পেতে ব্যবহৃত হয়।
  • উদাহরণ:

    echo $this->form_validation->error_string();
    

উদাহরণ: একটি সম্পূর্ণ Form Validation

Controller

class User extends CI_Controller {
    public function register() {
        $this->load->library('form_validation');

        $this->form_validation->set_rules('name', 'Name', 'required|min_length[3]');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
        $this->form_validation->set_rules('password', 'Password', 'required|min_length[8]');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required|matches[password]');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('register_form');
        } else {
            echo "Registration Successful!";
        }
    }
}

View (register_form.php)

<form method="post" action="<?php echo base_url('user/register'); ?>">
    <label for="name">Name:</label>
    <input type="text" name="name" value="<?php echo set_value('name'); ?>">
    <?php echo form_error('name'); ?>

    <label for="email">Email:</label>
    <input type="text" name="email" value="<?php echo set_value('email'); ?>">
    <?php echo form_error('email'); ?>

    <label for="password">Password:</label>
    <input type="password" name="password">
    <?php echo form_error('password'); ?>

    <label for="passconf">Confirm Password:</label>
    <input type="password" name="passconf">
    <?php echo form_error('passconf'); ?>

    <button type="submit">Register</button>
</form>

Form Validation এর সুবিধা

  1. ইনপুট যাচাই সহজ এবং সুরক্ষিত।
  2. ডাটাবেস সংরক্ষণের আগে ইনপুট যাচাই নিশ্চিত করা।
  3. প্রি-ডিফাইন্ড Rules ব্যবহার করে দ্রুত ডেভেলপমেন্ট।
  4. কাস্টম মেসেজ ব্যবহারযোগ্য।

Form Validation CodeIgniter এর একটি শক্তিশালী ফিচার, যা ওয়েব অ্যাপ্লিকেশনে ইনপুট যাচাইয়ের একটি নিরাপদ এবং কার্যকর সমাধান প্রদান করে।

Content added By

Custom Validation Rules তৈরি করা

Custom Validation Rules ব্যবহার করে CodeIgniter-এ ফর্ম বা ডেটা যাচাইয়ের জন্য আপনার নির্দিষ্ট নিয়ম তৈরি করা যায়। CodeIgniter এর বিল্ট-ইন ভ্যালিডেশন রুল ছাড়াও, কাস্টম ভ্যালিডেশন রুল যোগ করার মাধ্যমে আপনি অ্যাপ্লিকেশনকে আরও নমনীয় করতে পারেন।


Custom Validation Rules তৈরি করার ধাপ

ধাপ ১: Validation রুল তৈরি

Custom Validation Rules তৈরি করতে app/Validation ডিরেক্টরিতে একটি নতুন ক্লাস তৈরি করুন।

উদাহরণ:

  1. app/Validation ডিরেক্টরিতে একটি ফাইল তৈরি করুন (যেমন: CustomRules.php)।
  2. ক্লাসের ভেতরে একটি ফাংশন যোগ করুন, যেখানে যাচাইয়ের লজিক থাকবে।
<?php

namespace App\Validation;

class CustomRules
{
    public function validPhone(string $str, string $fields, array $data): bool
    {
        // কাস্টম লজিক: শুধুমাত্র ১১ সংখ্যার ফোন নম্বর গ্রহণ করবে
        return preg_match('/^\d{11}$/', $str) === 1;
    }
}

ধাপ ২: Custom Rules নিবন্ধন করা

Custom Validation Rule ব্যবহার করার জন্য এটিকে CodeIgniter-এ নিবন্ধন করতে হবে।

  1. app/Config/Validation.php ফাইল খুলুন।
  2. $ruleSets অ্যারের মধ্যে আপনার ক্লাসটি যোগ করুন:

    public $ruleSets = [
        \CodeIgniter\Validation\Rules::class,
        \App\Validation\CustomRules::class, // কাস্টম রুল যোগ করা
    ];
    

ধাপ ৩: Custom Rule ব্যবহার করা

Form validation এ Custom Rule ব্যবহার করতে পারবেন।

উদাহরণ:

$validation = \Config\Services::validation();

$rules = [
    'phone' => 'required|validPhone', // Custom Rule 'validPhone' ব্যবহার
];

$data = [
    'phone' => '01712345678',
];

if ($validation->setRules($rules)->run($data)) {
    echo "Validation Passed!";
} else {
    echo "Validation Failed!";
    print_r($validation->getErrors());
}

Custom Validation Rules-এ Error Message সংযুক্ত করা

Custom Validation Rules-এর জন্য নির্দিষ্ট Error Message কনফিগার করা যায়।

Error Message যোগ করার ধাপ:

  1. app/Language/en/Validation.php ফাইলটি খুলুন।
  2. আপনার কাস্টম রুলের জন্য একটি মেসেজ সংযুক্ত করুন:

    return [
        'validPhone' => 'The {field} must be a valid 11-digit phone number.',
    ];
    

উদাহরণ: একটি সম্পূর্ণ কাস্টম রুল ইমপ্লিমেন্টেশন

Custom Rule: বয়স যাচাই

আপনি একটি রুল তৈরি করতে পারেন, যা চেক করবে একজন ব্যবহারকারীর বয়স ১৮-এর উপরে কিনা।

  1. CustomRules.php:

    <?php
    
    namespace App\Validation;
    
    class CustomRules
    {
        public function validAge(string $str, string $fields, array $data): bool
        {
            return (int)$str >= 18;
        }
    }
    
  2. Validation.php এ নিবন্ধন:

    public $ruleSets = [
        \CodeIgniter\Validation\Rules::class,
        \App\Validation\CustomRules::class,
    ];
    
  3. Validation Message যোগ: app/Language/en/Validation.php ফাইল:

    return [
        'validAge' => 'The {field} must be 18 years or older.',
    ];
    
  4. Rule ব্যবহার:

    $rules = [
        'age' => 'required|validAge',
    ];
    
    $data = [
        'age' => 17,
    ];
    
    if ($validation->setRules($rules)->run($data)) {
        echo "Validation Passed!";
    } else {
        print_r($validation->getErrors());
    }
    

Output:

Array
(
    [age] => The age must be 18 years or older.
)

সুবিধা

  1. পুনরায় ব্যবহারযোগ্যতা: একই রুল একাধিক স্থানে ব্যবহার করা যায়।
  2. সহজ ব্যবস্থাপনা: বড় এবং জটিল যাচাই পদ্ধতি কাস্টম রুলের মাধ্যমে সহজে পরিচালনা করা যায়।
  3. Error Message কাস্টমাইজেশন: নির্দিষ্ট ফিল্ড অনুযায়ী ব্যবহারকারীর জন্য কাস্টম মেসেজ দেখানো যায়।

Custom Validation Rules ব্যবহার করে CodeIgniter-এ উন্নত এবং নির্ভুল ভ্যালিডেশন মেকানিজম তৈরি করা যায়, যা অ্যাপ্লিকেশনের ডেটা ইন্টিগ্রিটি নিশ্চিত করে।

Content added By

Form Errors এবং Success Messages প্রদর্শন

CodeIgniter-এ ফর্মের ভ্যালিডেশন ত্রুটি (Form Errors) এবং সফল বার্তা (Success Messages) প্রদর্শনের জন্য বিল্ট-ইন ফিচার রয়েছে। এই বার্তাগুলো ব্যবহারকারীদের ইনপুট ফর্মের সঠিকতা যাচাই এবং সঠিক কার্যক্রম নিশ্চিত করতে সহায়ক।


ফর্ম ভ্যালিডেশন সেটআপ

CodeIgniter-এ ফর্ম ভ্যালিডেশন পরিচালনা করতে Validation লাইব্রেরি ব্যবহার করা হয়। এই লাইব্রেরি ফর্ম ইনপুট যাচাই করতে এবং প্রয়োজনীয় ত্রুটি বার্তা প্রদর্শন করতে সক্ষম।

Controller-এ ফর্ম ভ্যালিডেশন উদাহরণ:

<?php
namespace App\Controllers;

use CodeIgniter\Controller;

class FormController extends Controller {
    public function submit() {
        $validation = \Config\Services::validation();

        // ফর্মের নিয়ম সংজ্ঞায়িত
        $rules = [
            'username' => 'required|min_length[5]',
            'email'    => 'required|valid_email',
            'password' => 'required|min_length[8]'
        ];

        if ($this->request->getMethod() === 'post') {
            if (!$this->validate($rules)) {
                // ত্রুটি বার্তা দেখানো
                return view('form_view', ['validation' => $validation]);
            } else {
                // সফল বার্তা দেখানো
                session()->setFlashdata('success', 'Form submitted successfully!');
                return redirect()->to('/form');
            }
        }

        return view('form_view');
    }
}

View-তে ত্রুটি বার্তা প্রদর্শন

ত্রুটি বার্তা দেখানোর জন্য কোড:

View ফাইলের মধ্যে ভ্যালিডেশন ত্রুটি বার্তা প্রদর্শনের জন্য নিচের কোড ব্যবহার করুন:

<?php if (isset($validation)): ?>
    <div class="alert alert-danger">
        <?= $validation->listErrors() ?>
    </div>
<?php endif; ?>

আলাদা ইনপুট ফিল্ডের ত্রুটি প্রদর্শন:

<div>
    <label for="username">Username</label>
    <input type="text" name="username" value="<?= set_value('username') ?>">
    <small class="text-danger"><?= $validation->getError('username') ?></small>
</div>

<div>
    <label for="email">Email</label>
    <input type="email" name="email" value="<?= set_value('email') ?>">
    <small class="text-danger"><?= $validation->getError('email') ?></small>
</div>

View-তে সফল বার্তা প্রদর্শন

Session Flashdata ব্যবহার করে সফল বার্তা প্রদর্শন:

<?php if (session()->getFlashdata('success')): ?>
    <div class="alert alert-success">
        <?= session()->getFlashdata('success') ?>
    </div>
<?php endif; ?>

সম্পূর্ণ View উদাহরণ

app/Views/form_view.php

<!DOCTYPE html>
<html>
<head>
    <title>Form Validation</title>
</head>
<body>
    <h1>Registration Form</h1>

    <!-- ত্রুটি বার্তা -->
    <?php if (isset($validation)): ?>
        <div class="alert alert-danger">
            <?= $validation->listErrors() ?>
        </div>
    <?php endif; ?>

    <!-- সফল বার্তা -->
    <?php if (session()->getFlashdata('success')): ?>
        <div class="alert alert-success">
            <?= session()->getFlashdata('success') ?>
        </div>
    <?php endif; ?>

    <!-- ফর্ম -->
    <form action="/form/submit" method="post">
        <?= csrf_field() ?>
        <div>
            <label for="username">Username</label>
            <input type="text" name="username" value="<?= set_value('username') ?>">
            <small class="text-danger"><?= $validation->getError('username') ?></small>
        </div>

        <div>
            <label for="email">Email</label>
            <input type="email" name="email" value="<?= set_value('email') ?>">
            <small class="text-danger"><?= $validation->getError('email') ?></small>
        </div>

        <div>
            <label for="password">Password</label>
            <input type="password" name="password">
            <small class="text-danger"><?= $validation->getError('password') ?></small>
        </div>

        <button type="submit">Submit</button>
    </form>
</body>
</html>

Common Functions

set_value('field_name')

ফর্ম পুনরায় লোড হলে ফিল্ডে পূর্বের ইনপুট মান প্রদর্শন করে।

getError('field_name')

নির্দিষ্ট ইনপুট ফিল্ডের ত্রুটি বার্তা প্রদর্শন করে।

listErrors()

সব ত্রুটি একসাথে তালিকাভুক্ত করে দেখায়।

session()->setFlashdata('key', 'value')

একটি সাময়িক বার্তা সংরক্ষণ করে।

session()->getFlashdata('key')

সেট করা বার্তা পুনরায় রেন্ডার করে।


উপসংহার

CodeIgniter-এ ফর্ম ভ্যালিডেশন এবং বার্তা প্রদর্শন একটি সহজ এবং কার্যকর পদ্ধতি। Form Errors ব্যবহারকারীদের ইনপুটের ত্রুটি সংশোধন করতে সাহায্য করে এবং Success Messages সফল কাজের জন্য তাদের নিশ্চিত করে। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

Content added By
Promotion